Lean 4 ログ
2024-08-04
『Theorem Proving in Lean 4』
量化子と等号 - Theorem Proving in Lean 4 日本語訳
帰納と再帰 - Theorem Proving in Lean 4 日本語訳
公理と計算 - Theorem Proving in Lean 4 日本語訳
Calculus of Inductive Constructions(CIC)
証明無関係(proof-irrelevance)
opaqueタクティク
非可述性(impredicative)
have(Lean)
dsimp
dsimp: 定義に展開 - Lean by Example
定義上(definitionally)等しいような変形だけを行うという制約付きの simp
@pred: 暗黙の引数を表示させる
assumption
choice principle(選択原理)
ラッセルのパラドックスとはまた違うジラールのパラドックス(Girard's paradox)があることが分かった
code:memo
命題外延性の公理 propext
商型 Quot の構築 : 関数外延性 funext を含意する
選択原理 Classical.choice : 存在命題 Nonempty α からデータ a : α を生成する
propext, funext
setext
命題論理に帰着させる
Eq.reqOn
帰納法
motiveタクティク
Observational Type Theory
同値類
商型Quot
Quot.mk
Quot.sound
Setoid
同値型がくっついた型クラス
2025-02-16
What makes dependent type theory dependent? (何が依存型理論を依存たらしめているのか?)
Lean 4は、auto bound implicit arguments(自動束縛暗黙引数)という新機能をサポートしている。この機能により、compose のような関数をより便利に書くことができる。Leanが定義宣言の前提を処理するとき、まだ束縛されていない識別子が1文字の小文字かギリシャ文字であれば、それらが暗黙引数として自動的に追加される。この機能を使うと、 compose を次のように書くことができる。
code:lean.haskell
def compose (g : β → γ) (f : α → β) (x : α) : γ :=
g (f x)
#check @compose
-- {β : Sort u_1} → {γ : Sort u_2} → {α : Sort u_3} → (β → γ) → (α → β) → α → γ
Leanとの対話 - Theorem Proving in Lean 4 日本語訳
@演算子(Lean)
しかし、ある関数の引数を暗黙の引数として宣言しておきながら、その引数を明示的に与えたいという状況に陥ることがある。 foo がそのような関数である場合、 @foo という表記は、すべての引数を明示的にした同じ関数を表す。
@をつけることで